/** 
 * @description 公共form表单验证规则。本文件放至在src目录下的utils中
*/

/**
 * @验证字段 整数
 */
export const validateIntNumber = (rule, value, callback) => {
  let reg = /^\d*$/;
  if (!value) {
    callback();
  } else if (!reg.test(value)) {
    callback(new Error("只能输入整数"));
  } else {
    callback();
  }
}

/**
 * @验证字段 取水量(万m³)  
 */
export const validateWaterAmount = (rule, value, callback) => {
  let reg = /^[0-9]+?(\.\d{1,4})*$/;
  if (!value) {
    callback();
  } else if (!reg.test(value)) {
    callback(new Error("请输入保留4位小数的正数"));
  } else {
    callback();
  }
}

/**
 * @验证字段 经度、纬度（保留6位小数） 
 */
export const validateLngDuLatDu = (rule, value, callback) => {
  let reg = /^[0-9]+?(\.\d{1,6})*$/;
  if (!value) {
    callback();
  } else if (!reg.test(value)) {
    callback(new Error("请输入保留6位小数的正数"));
  } else {
    callback();
  }
}


/**
 * @验证字段 用水计划量(万m³) 许可年取水量(万m³)  流速仪精度(m³/s)  水位计精度(cm) 年用水量(万m³)
 */
export const validatePlanWaterAmount = (rule, value, callback) => {
  let reg = /^[0-9]{1,7}?(\.\d{0,4})*$/;
  if (!value) {
    callback();
  } else if (!reg.test(value)) {
    callback(new Error("最大为保留4位小数的10位数"));
  } else {
    callback();
  }
}

/**
 * @验证字段 东经-度
 */
export const validateLngDu = (rule, value, callback) => {
  let reg = /^[1-9]+/;
  if (!value) {
    callback();
  } else if (!reg.test(value)) {
    callback(new Error("输入数值"));
  } else if (value > 180) {
    callback(new Error("小于180的正整数"));
  } else {
    callback();
  }
}

/**
 * @验证字段 北纬-度
 */
export const validateLatDu = (rule, value, callback) => {
  let reg = /^[1-9]+/;
  if (!value) {
    callback();
  } else if (!reg.test(value)) {
    callback(new Error("输入数值"));
  } else if (value > 90) {
    callback(new Error("小于90的正整数"));
  } else {
    callback();
  }
}

/**
 * @验证字段 东经-分 北纬-分
 */
export const validateLngLatFen = (rule, value, callback) => {
  let reg = /^[1-9]+/; // 验证正数
  if (!value) {
    callback();
  } else if (!reg.test(value)) {
    callback(new Error("输入数值"));
  } else if (value >= 60) {
    callback(new Error("小于60的正整数"));
  } else {
    callback();
  }
}

/**
 * @验证字段 东经-秒 北纬-秒
 */
export const validateLngLatMiao = (rule, value, callback) => {
  let reg = /^[0-9]+?(\.\d{0,2})*$/;; // 验证正数
  if (!value) {
    callback();
  } else if (!reg.test(value)) {
    callback(new Error("输入数值"));
  } else if (value >= 60) {
    callback(new Error("小于60保留两位数的小数"));
  } else {
    callback();
  }
}

/**
 * @验证字段 管道内径、前直管段长度、后直管段长度、设计最大过流能力、流量计量程 
 */
export const validateGDNJ = (rule, value, callback) => {
  let reg = /^[0-9]{1,11}?(\.\d{0,4})*$/;
  if (!value) {
    callback();
  } else if (!reg.test(value)) {
    callback(new Error("最大为保留4位小数的15位数"));
  } else {
    callback();
  }
}

/**
 * @验证字段 取水许可证 第一段      取水 【国长】 字[2016]第19003号
 */
export const validateLicenseNumberFirst = (rule, value, callback) => {
  let reg = /^(.*){4}$/;
  if (!value) {
    callback();
  } else if (!reg.test(value)) {
    callback(new Error("请输入4位有效字符"));
  } else {
    callback();
  }
}

/**
 * @验证字段 取水许可证 第二段      取水 国长 字[【2016】]第19003号
 */
export const validateLicenseNumberSecond = (rule, value, callback) => {
  let reg = /^[0-9]{4}$/;
  if (!value) {
    callback();
  } else if (!reg.test(value)) {
    callback(new Error("请输入4位有效数字"));
  } else {
    callback();
  }
}

/**
 * @验证字段 取水许可证 第三段      取水 国长 字[2016]第【19003】号
 */
export const validateLicenseNumberThird = (rule, value, callback) => {
  let reg = /^[0-9]{1,5}$/;
  if (!value) {
    callback();
  } else if (!reg.test(value)) {
    callback(new Error("请输入1到5位有效数字"));
  } else {
    callback();
  }
}

/**
 * @验证字段 使用年限
 */
export const validateFixedYear = (rule, value, callback) => {
  let reg = /^[0-9]{1,2}$/;
  if (!value) {
    callback();
  } else if (!reg.test(value)) {
    callback(new Error("请输入1到2位有效数字"));
  } else {
    callback();
  }
}

/**
 * @验证字段 投资总额(万元) 年节水价值(万元) 实施前年循环水用量(万吨) 年节约循环水(万吨)
 */
export const validateInvestmentAmount = (rule, value, callback) => {
  let reg = /^[0-9]{1,8}?(\.\d{0,2})*$/;
  if (!value) {
    callback();
  } else if (!reg.test(value)) {
    callback(new Error("最大为保留2位小数的10位数"));
  } else {
    callback();
  }
}

/**
 * @验证字段 年用水量平均增长率(%) 年用水效率(GDP元/m³)	 年用水率平均增长率(%) 
 */
export const validateGrowthRate = (rule, value, callback) => {
  let reg = /^[0-9]{1,4}?(\.\d{0,5})*$/;
  if (!value) {
    callback();
  } else if (!reg.test(value)) {
    callback(new Error("最大为保留5位小数的9位数"));
  } else {
    callback();
  }
}

/**
 * @验证字段 社会经济信息服务 数字项长度判断
 */
export const validateCommunityEconomyNumber = (rule, value, callback) => {
  let reg = /^[1-9]\d{1,9}?(\.\d{0,2})*$/;
  if (!value) {
    callback();
  } else if (!reg.test(value)) {
    callback(new Error("最大为保留2位小数的12位数"));
  } else {
    callback();
  }
}

/**
 * @验证字段 行业代码
 */
export const validateIndustryCode = (rule, value, callback) => {
  let reg = /^\d.*$/;
  if (!reg.test(value)) {
    callback(new Error("只能输入数字"));
  } else {
    callback();
  }
}

/**
 * @验证字段 水质监测上报-上报指标
 */
export const validateReportIndex = (rule, value, callback) => {
  let reg = /^-?[0-9]+?(\.\d{0,8})*$/;
  if (!value) {
    callback();
  } else if (!reg.test(value)) {
    callback(new Error("只能输入数字值"));
  } else {
    callback();
  }
}

/**
 * @验证字段 序号
 */
export const validateSerialNumber = (rule, value, callback) => {
  let reg = /^[0-9]{1,6}$/;
  if (!value) {
    callback();
  } else if (!reg.test(value)) {
    callback(new Error("请输整数"));
  } else {
    callback();
  }
}

/**
 * @验证字段 标准参数I类
 */
export const validateStandardParameter = (rule, value, callback) => {
  let reg = /^[0-9]{1,7}?(\.\d{0,5})*$/;
  if (!value) {
    callback();
  } else if (!reg.test(value)) {
    callback(new Error("最大为保留5位小数的7位数"));
  } else {
    callback();
  }
}

/**
 * @验证字段 设计年供水人口(万人)  设计年供水量(百万m³)
 */
export const validatePopulation = (rule, value, callback) => {
  let reg = /^[0-9]{1,4}?(\.\d{0,3})*$/;
  if (!value) {
    callback();
  } else if (!reg.test(value)) {
    callback(new Error("最大为保留3位小数的4位数"));
  } else {
    callback();
  }
}

/**
 * @验证字段 计量监测点编码
 */
export const validateMpDevno = (rule, value, callback) => {
  let reg = /^[A-Z]{1}500/;
  if (!value) {
    callback();
  } else if (!reg.test(value)) {
    callback(new Error("必须以“大写字母500”开头，具体规则请看提示"));
  } else {
    callback();
  }
}

/**
   * 不能大于某个数值
   * @param num 数值
   */
export const validateGreaterThanNum = (num) => {
  return function (rule, value, callback) {
    let val = Number(value)
    if (val > num) {
      callback(new Error(`数值不能大于${num}`));
    } else {
      callback();
    }
  };
}

// 验证手机号码
export const validateCellPhone = (rule, value, callback) => {
  let reg = /(^1[2|3|4|5|6|7|8|9]\d{9}$)/; //手机号验证
  if (!reg.test(value)) {
    callback(new Error("请输入11位手机号码"));
  } else {
    callback();
  }
}

// 验证邮箱
export const validateEmail = (rule, value, callback) => {
  const reg = /^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
  if (!value) {
    callback();
  } else if (!reg.test(value)) {
    callback(new Error("请输入正确电子邮箱地址"));
  } else {
    callback();
  }
}

//验证电话号码（座机和手机）
export const validatePhone = (rule, value, callback) => {
  let reg1 = /(^1[2|3|4|5|6|7|8|9]\d{9}$)/; //手机号验证
  let reg2 = /^(0[0-9]{2,3}\-)([2-9][0-9]{6,7})+(\-[0-9]{1,4})?$/; // 座机号验证
  if (!value) {
    callback();
  } else if (!reg1.test(value) && !reg2.test(value)) {
    callback(new Error("请输入手机或座机，如：13866666666 或 023-66666666"));
  } else {
    callback();
  }
}

/**
 * @验证字段 钱 
 */
export const validateMoney = (rule, value, callback) => {
  let reg = /^[0-9]+?(\.\d{0,4})*$/;
  if (!value) {
    callback();
  } else if (!reg.test(value)) {
    callback(new Error("请输入数字，最多保留4位小数"));
  } else {
    callback();
  }
}